package módulo9;

/**
 *
 * @author Nícolas Riccieri Gardin Assumpção    Ra: 121245
 */
public class DisciplinaCursada {
    private final String[] TIPO_APROVACAO= {"SEM INFORMACAO",
                                            "DISPENSADO DE CURSAR DISCIPLINA",
                                            "PROFICIENCIA",
                                            "APROVADO POR FREQUENCIA",
                                            "APROVADO POR NOTA E FREQUENCIA",
                                            "REPROVADO POR NOTA",
                                            "REPROVADO POR FREQUENCIA",
                                            "APROVEITAMENTO DE ESTUDOS",
                                            "DESISTENCIA",
                                            "DISCIPLINA CANCELADA OFICIO",
                                            "DISPENSA DISCIPLINA PEDAGOGICA",
                                            "DISPENSA POR IDADE",
                                            "DISPENSA POR PROLE",
                                            "DISPENSA POR TRABALHO",
                                            "DISPENSA POR DEFICIENCIA FISICA",
                                            "DISPENSA POR NAO OFERECIMENTO",
                                            "PRATICA ED. FISICA SERV. MILITAR",
                                            "SUFICIENTE - APROVADO",
                                            "INSUFICIENTE - REPROVADO"};
    
    private String linha;
    private String materia;
    private String turma;
    private int creditos;
    private char aproveitamento;
    private char categoria;
    private double nota;
    private int cargaHoraria;
    private int codigoAprovacao;
    private String periodo;

    public String getAproveitamento() {
        if(this.aproveitamento == '+'){
            return "OBRIGATORIA";
        }
        else if(aproveitamento=='*'){
            return "ELETIVA";
        }
        else if(aproveitamento=='X'){
            return "EXTRA-CURRICULAR";
        }
        return "DESCONHECIDO";
    }

    public void setAproveitamento(char aproveitamento) {
        this.aproveitamento = aproveitamento;
    }

    public int getCargaHoraria() {
        return cargaHoraria;
    }

    public void setCargaHoraria(int cargaHoraria) {
        this.cargaHoraria = cargaHoraria;
    }

    public String getCategoria() {
        if(this.categoria == '!'){
            return "ESPECIAL";
        }
        else if(this.categoria=='&'){
            return "ESPECIAL CONVIDADO";
        }
        else if(this.categoria=='?'){
            return "ESPECIAL EX-OFFICIO";
        }
        return "DESCONHECIDO";
    }

    public void setCategoria(char categoria) {
        this.categoria = categoria;
    }

    public String getCodigoAprovacao() {
        return this.TIPO_APROVACAO[codigoAprovacao];
    }

    public void setCodigoAprovacao(int codigoAprovacao) {
        this.codigoAprovacao = codigoAprovacao;
    }

    public int getCreditos() {
        return creditos;
    }

    public void setCreditos(int creditos) {
        this.creditos = creditos;
    }

    public String getLinha() {
        return linha;
    }

    public void setLinha(String linha) {
        this.linha = linha;
    }

    public String getMateria() {
        return materia;
    }

    public void setMateria(String materia) {
        this.materia = materia;
    }

    public double getNota() {
        return nota;
    }

    public void setNota(double nota) {
        this.nota = nota;
    }

    public String getPeriodo() {
        return periodo;
    }

    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    public String getTurma() {
        return turma;
    }

    public void setTurma(String turma) {
        this.turma = turma;
    }
    
    public DisciplinaCursada(String l, String m, String t, int c, char a,
                            char cat, double n, int ch, int ca, String p){
        this.linha = l;
        this.materia = m;
        this.turma = t;
        this.creditos = c;
        this.aproveitamento = a;
        this.categoria = cat;
        this.nota = n;
        this.cargaHoraria = ch;
        this.codigoAprovacao = ca;
        this.periodo = p;
    }
    
    //Devolve se disciplina pode ser usada como cumprimento de pre-requisito
    public boolean cumprimento(){
        return (this.codigoAprovacao != 0 && this.codigoAprovacao != 5 && 
                this.codigoAprovacao != 6 && this.codigoAprovacao != 8 && 
                this.codigoAprovacao != 9 && this.codigoAprovacao != 17 &&
                this.codigoAprovacao != 18 && this.codigoAprovacao != 19 &&
                this.codigoAprovacao != 21);
    }
    
    @Override
    public String toString(){
        return this.linha;
    }
}
